package day1107.demo04;

/**
 * @program: qy158
 * @description:
 * @author: 闫克起2
 * @create: 2022-11-07 10:21
 * 1. 单例模式分为两种: 第一种 饿汉式   第二种  懒汉式
 * 2. 某个类要想成为单例类，必须满足如下步骤：
 * （1）构造方法必须私有化---外界无法直接创建该类的对象
 * (2)声明一个静态的本类对象
 * (3)提供一个静态方法 供外界获取该类对象。
 **/
public class Singleton {

    //第一步
    private Singleton() {
    }

    //声明一个静态的本类对象----懒汉式
    private static Singleton singleton;

    //提供一个静态方法返回本类的对象
    public static Singleton getInstance() {
          //如果多个线程进来后发现sington不等于null,则无需在获取锁对象
          if(singleton==null){
                synchronized (Singleton.class){
                     //如果对象不等于null则无需创建对象
                     if(singleton==null){
                          singleton=new Singleton();
                     }
                }
          }
          return singleton;
    }

    public void show() {
        System.out.println("~~~~~~~~~~~~~~~~~~~~~show方法~~~~~~~~~~~~~~~");
    }
}
